#ifndef HUFFMAN_H_
#define HUFFMAN_H_

#include "../myTypes.h"
#include "../bit.h"

#define HUFFMANID	"huff"
#define BZIPID		"bzip"
#define DEFLATEID	"defl"


#define MAXCAR		256		//taille de l'alphabet

typedef struct {
	char		id[4];		//Identifiant du fichier
	size_t		oriSize;	//Taille du fichier original (non compressé)
	bitbuf_t 	treebuf;	//Buffer contenant l'arbre de Huffman
}huffheader;

//Initialisation de huffman
extern void HUFF_init();
extern void HUFF_encode(bitbuf_t * dst, bitbuf_t * src);
extern void HUFF_decode(bitbuf_t * dst, bitbuf_t * src);
extern void HUFF_compress(FILE * out, FILE * in, char * headerID);
extern void HUFF_decompress(FILE * out, FILE * in);


#endif // HUFFMAN_H_
